package NLP;

import NLP.impl.GrammarCheckImpl;
import entity.Word;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

/**
 * @author: ChenforCode
 * @date: 2018/12/28 23:30
 * @description: 语法检查的测试类
 */
public class GrammarTestCheck {

    /*空山 不见 人 但 闻 人语 响 返 景 入 深林 复照 青苔 上*/
    public static List<Word> getPoem(){
        List<Word> poem = new ArrayList<Word>();
        Word w1 = new Word();
        List list = new ArrayList();
        list.add("1");
        list.add("1");
        w1.setTone(list);
        w1.setWord("空山");
        poem.add(w1);

        Word w2 = new Word();
        List list1 = new ArrayList();
        list1.add("2");
        list1.add("4");
        w2.setTone(list1);
        w2.setWord("不见");
        poem.add(w2);

        Word w3 = new Word();
        List list2 = new ArrayList();
        list2.add("2");
        w3.setTone(list2);
        List list3 = new ArrayList();
        list3.add("en");
        w3.setWord("人");
        w3.setYunmu(list3);
        poem.add(w3);

        //但
        Word w4 = new Word();
        List list4 = new ArrayList();
        list4.add("4");
        w4.setTone(list4);
        w4.setWord("但");
        poem.add(w4);

        //闻
        Word w5 = new Word();
        List list5 = new ArrayList();
        list5.add("2");
        w5.setTone(list5);
        w5.setWord("闻");
        poem.add(w5);

        //人语
        Word w6 = new Word();
        List list6 = new ArrayList();
        list6.add("2");
        list6.add("3");
        w6.setTone(list6);
        w6.setWord("人语");
        poem.add(w6);

        //响
        Word w7 = new Word();
        List list7 = new ArrayList();
        list7.add("3");
        w7.setTone(list7);
        List list8 = new ArrayList();
        list8.add("ang");
        w7.setYunmu(list8);
        w7.setWord("响");
        poem.add(w7);

        //返
        Word w8 = new Word();
        List list9 = new ArrayList();
        list9.add("3");
        w8.setTone(list9);
        w8.setWord("返");
        poem.add(w8);

        //景
        Word w9 = new Word();
        List list10 = new ArrayList();
        list10.add("3");
        w9.setTone(list10);
        w9.setWord("景");
        poem.add(w9);

        //入
        Word w10 = new Word();
        List list11 = new ArrayList();
        list11.add("4");
        w10.setTone(list11);
        w10.setWord("入");
        poem.add(w10);

        //深林
        Word w11 = new Word();
        List list12 = new ArrayList();
        list12.add("1");
        list12.add("2");
        w11.setTone(list12);
        w11.setWord("深林");
        poem.add(w11);

        //复照
        Word w12 = new Word();
        List list13 = new ArrayList();
        list13.add("4");
        list13.add("4");
        w12.setTone(list13);
        w12.setWord("复照");
        poem.add(w12);

        //青苔
        Word w13 = new Word();
        List list14 = new ArrayList();
        list14.add("1");
        list14.add("2");
        w13.setTone(list14);
        poem.add(w13);
        w13.setWord("青苔");

        //上
        Word w14 = new Word();
        List list15 = new ArrayList();
        list15.add("4");
        w14.setTone(list15);
        List list16 = new ArrayList();
        list16.add("ang");
        w14.setYunmu(list16);
        poem.add(w14);
        w14.setWord("上");

        return poem;
    }


    @Test
    /**
     * @return boolean
     * @Author ChenforCode
     * @Description //TODO 测试是否可以通过韵律，wordLength方法还没有，等明天解决
     * @Date 0:07 2018/12/29
     * @Param []
     **/
    public void checkRhythm(){
        GrammarCheck check = new GrammarCheckImpl();

        List<Word> poem = getPoem();
        for (Word w :
                poem) {
            List<String> list = w.getTone();
            for (String s:
                 list
            ) {
                if (s.equals("1") || s.equals("2")){
                    System.out.print("0");
                } else {
                    System.out.print("1");
                }

            }
        }

        System.out.println(check.checkLevelAndOblique(poem));
        System.out.println(check.checkRhythm(poem));
    }
}
